Consulta de Guías Docentes



Academic Year/course: 2021/22

615 - Máster Universitario en Robótica, Gráficos y Visión por Computador / Robotics, Graphics and Computer Vision

69154 - Programming and Architecture of Computing Systems


Syllabus Information

Academic Year:
2021/22
Subject:
69154 - Programming and Architecture of Computing Systems
Faculty / School:
110 - Escuela de Ingeniería y Arquitectura
Degree:
615 - Máster Universitario en Robótica, Gráficos y Visión por Computador / Robotics, Graphics and Computer Vision
ECTS:
6.0
Year:
1
Semester:
First semester
Subject Type:
Compulsory
Module:
---

1. General information

1.1. Aims of the course

The main objective of the course is to provide students with knowledge about computer systems from hardware to software, with special emphasis on the most important aspects for robotics, graphics, and computer vision applications. Specifically, the different levels of abstraction will be studied including applications, libraries and runtimes, operating systems. Also, students will learn some knowledge on hardware design, including the differences between devices such as CPUs, GPUs, FPGAs, or ASIC accelerators. The course will present analytical models of the most relevant metrics in computing and how to use them for analyzing performance or energy consumption, among other fundamental aspects, as well. Another important objective is to train students to know how to efficiently use different programming models according to their needs and notions of parallelism and heterogeneous computing, in addition to knowing different program optimization techniques and analysis tools.

These approaches and objectives are aligned with some of the Sustainable Development Goals, SDG, of the 2030 Agenda (https://www.un.org/sustainabledevelopment/es/) and certain specific goals, in such a way that the acquisition of the Learning outcomes of the subject provides training and competence to the student to contribute to a certain extent to their achievement:

  • Goal 7: Ensure access to affordable, safe, sustainable and modern energy for all
    • Target 7.3: By 2030, double the global rate of improvement in energy efficiency
  • Objective 9: Industry, innovation and infrastructure
    • Target 9.5 Increase scientific research and improve the technological capacity of the industrial sectors of all countries
    • Target 9.c Significantly increase access to information and communication technology

1.2. Context and importance of this course in the degree

This course will allow the student to tackle the design and implementation of applications knowing how to choose the language and programming model, as well as the computing device. Such endeavour will be done taking into account the application requirements and the limitations imposed by the environment or by the chosen system itself. Therefore, this subject will be very useful when dealing with the implementation of any  assignments in the rest of the master's subjects as well as in the final diploma thesis.

1.3. Recommendations to take this course

This course does not enforce any requirement, but it is recommended to have notions of programming and preferably also some knowledge of computer architecture and programming models, although such knowledge is not essential.

2. Learning goals

2.1. Competences

In this subject, the student will acquire the following basic and general competences:

  • CB6 – To possess and understand knowledge that provides a basis or opportunity to be original in the development and / or application of ideas, often in a research context.
  • CB7 - That students know how to apply the acquired knowledge and ability to solve problems in new or little-known settings within broader (or multidisciplinary) contexts related to their area of ​​study.
  • CB8 - That students are able to integrate knowledge and face the complexity of formulating judgments based on information that, being incomplete or limited, includes reflections on the social and ethical responsibilities linked to the application of their knowledge and judgments.
  • CB9 - That students know how to communicate their conclusions and the latest knowledge and reasons that support them to specialized and non-specialized audiences in a clear and unambiguous way.
  • CB10 - That students possess the learning skills that allow them to continue studying in a way that will have to be largely self-directed or autonomous.
  • CG02 - Ability to apply and integrate their knowledge, their understanding, their scientific foundation and their problem-solving abilities in new and imprecisely defined environments, including multidisciplinary contexts, as highly specialized researchers and professionals.
  • CG03 - Ability to evaluate and select the appropriate scientific theory and the precise methodology of their fields of study to formulate judgments based on incomplete or limited information, including, when necessary and pertinent, considerations on social or ethical responsibility linked to the solution that is proposed in each case.
  • CG04 - Ability to predict and control the evolution of complex situations by developing new and innovative work methodologies adapted to the specific scientific / research, technological or professional field, generally multidisciplinary, in which their activity is carried out.
  • CG05 - Ability to transmit in English, orally and in writing, in a clear and unambiguous way, to a specialized audience or not, results from scientific and technological research or the most advanced field of innovation, as well as the most relevant foundations on which they are based.
  • CG06 – To have developed sufficient autonomy to participate in research projects and scientific or technological collaborations within their subject area, in interdisciplinary contexts and, where appropriate, with a high component of knowledge transfer.
  • CG07 - Ability to take responsibility for your own professional development and specialization in one or more fields of study.
  • CG08 – To possess the aptitudes, skills and method necessary to carry out multidisciplinary research and / or development work in the fields of Robotics, Graphics and / or Computer Vision.
  • CG09 - Ability to use the techniques, skills and tools of Engineering necessary for solving problems of the Robotics, Graphics and / or Computer Vision fields.
  • CG11 - Ability to manage and use bibliography, documentation, databases, software and hardware specific to the fields of Robotics, Graphics and / or Computer Vision.
  • CG12 - Ability to work in a multidisciplinary group and in a multilingual environment.

In addition, the student will acquire the following specific skills:

  • CE07 - Ability to develop and evaluate software for Robotics, Graphics and Computer Vision problems that can use general and / or specific purpose architectures.
  • CE10 - Ability to understand the operation of different computing devices.
  • CE11 - Ability to apply mathematical methods to model, design, develop and analyze performance-oriented computer systems.
  • CE12 - Ability to understand and apply programming models and specific purpose languages ​​to Robotics, Graphics or Computer Vision applications.

2.2. Learning goals

Upon completion of the course, students must be able to:

  • Know the main characteristics of the different computing devices
  • Know the main programming models in heterogeneous systems
  • Evaluate the benefits of a computer system in terms of performance and energy
  • Understand computer solutions (hardware and software) for problems with requirements such high computation intensity, latency, power ...
  • Choose the most suitable device and programming model for different types of problems in vision, robotics, and graphics applications
  • Design conscious algorithms of computing devices, performance, and energy consumption

2.3. Importance of learning goals

To carry out their work during the master's degree and afterwards, it is paramount that students are able to know both possible computing devices and the respective programming models to design correct and efficient solutions. Said results will be reached once the competences of the subject have been acquired.

3. Assessment (1st and 2nd call)

3.1. Assessment tasks (description of tasks, marking system and assessment criteria)

The evaluation will consist of multiple parts, and several of these will be evaluated continuously. Specifically, the following test types will be carried out:

  • Theoretical-practical written tests (weight 60%)
  • Delivery of directed work (weight 30%)
  • Presentations and debates (weight 10%)

Successful completion of the course requires obtaining an overall score equal to or greater than 5 out of 10 points in the sum of the parts and a rating equal to or greater than 4.5 in each of the individual parts. Failure to comply with these requirements assumes a maximum overall rating of less than or equal to 4.5.

4. Methodology, learning tasks, syllabus and resources

4.1. Methodological overview

The learning process followed in this course aims at achieving the learning objectives. For this, various teaching and learning strategies are used, which are detailed below.

Activities with teachers:

  • Master class: The instructor presents and explains the content of the class, including examples of theory and practices
  • Problem-based learning: Students tackle specific problems on the subject matter in small groups under the supervision of the teacher
  • Learning project-based: Students face projects of a certain size and duration in small groups under the supervision of the teacher
  • Practical sessions: Any practical activity carried out through collaboration or individually in class
  • Laboratory sessions: Activity carried out with specific equipment such as computers with specific hardware
  • Tutorials: Students discuss and review materials with the teaching staff
  • Assessment activities: The set of written and oral tests necessary for the assessment

Autonomous work:

  • Tasks: preparation of seminars, reading of scientific articles, small research projects, documents and presentations to be defend in class publicly or with the teacher
  • Laboratories: preparation of activities presented or evaluated in practical sessions
  • Theory study and practical cases: preparation of evaluation tests, libraries, readings, problem solving, etc.
  • Complementary activities: Optional and voluntary activities such as video viewing, attendance at seminars, workshops, etc.

4.2. Learning tasks

The course includes the following training activities: Master

  • Lectures, 30 hours
  • Problem solving and cases, 6 hours
  • Laboratory practices, 12 hours
  • Special practices, 2 hours
  • Practical application or research work, 40 hours
  • Personalized teacher-student tutoring, 5 hours
  • Study, 50 hours
  • Assessment tests, 5 hours

4.3. Syllabus

The course will cover the following topics:

  1. Computer Systems
    • Main elements (Application, Libraries, Operating System, Hardware ...)
    • Basic tools (compiler, debugger ...)
  2. General purpose processor architecture, graphic processors (rendering and computation), Programmable devices (FPGAs) and specific accelerators (ASICs)
  3. Efficiency analysis and metrics in heterogeneous systems (performance and energy)
  4. Efficiency oriented programming
  5. Heterogeneous programming models (CUDA, OpenCL ...) and High-Level Synthesis for FPGAs
  6. Domain Specific Languages ​​for Computer Vision, Robotics, and Graphics

4.4. Course planning and calendar

The course is planned according to the following scheme:

  • Theory classes, 2h / week
  • Problem classes and practical cases, 1h / week
  • Laboratory sessions, 2h / bi-weekly

The exact schedule will be announced in the school and course web pages, including assignment and project presentations dates.

4.5. Bibliography and recommended resources

  1. Ben Gaster et al., Heterogeneous Computing with OpenCL, Morgan Kaufmann, 2011
  2. J. Hennesy and D. Patterson, Computer Architecture: A Quantitative Approach (The Morgan Kaufmann Series in Computer Architecture and Design), Morgan Kaufmann, 2017


Curso Académico: 2021/22

615 - Máster Universitario en Robótica, Gráficos y Visión por Computador / Robotics, Graphics and Computer Vision

69154 - Programming and Architecture of Computing Systems


Información del Plan Docente

Año académico:
2021/22
Asignatura:
69154 - Programming and Architecture of Computing Systems
Centro académico:
110 - Escuela de Ingeniería y Arquitectura
Titulación:
615 - Máster Universitario en Robótica, Gráficos y Visión por Computador / Robotics, Graphics and Computer Vision
Créditos:
6.0
Curso:
1
Periodo de impartición:
Primer semestre
Clase de asignatura:
Obligatoria
Materia:
---

1. Información Básica

1.1. Objetivos de la asignatura

El objetivo principal de la asignatura es dotar al alumnado de conocimientos acerca de sistemas informáticos desde el hardware hasta el software, haciendo especial énfasis en los aspectos más destacados para aplicaciones de robótica, gráficos y visión por computador. En concreto, se estudiarán los distintos niveles de abstracción incluyendo las aplicaciones, bibliotecas y runtimes, sistemas operativos, y algunas notas sobre diseño hardware, incluyendo las diferencias entre dispositivos como CPUs, GPUs, FPGAs, o aceleradores ASICs. También se presentarán modelos analíticos de las métricas más relevantes en computación y cómo se pueden utilizar para analizar el rendimiento o el consumo energético, entre otros aspectos fundamentales. Otro objetivo importante es capacitar a los alumnos para saber emplear de manera eficiente distintos modelos de programación de acuerdo a sus necesidades y de nociones de paralelismo y de computación heterogénea, además de conocer distintas técnicas de optimización software y hardware así como las herramientas de análisis requeridas.

Estos planteamientos y objetivos están alineados con algunos de los Objetivos de Desarrollo Sostenible, ODS, de la Agenda 2030 (https://www.un.org/sustainabledevelopment/es/) y determinadas metas concretas, de tal manera que la adquisición de los resultados de aprendizaje de la asignatura proporciona capacitación y competencia al estudiante para contribuir en cierta medida a su logro:

  • Objetivo 7: Garantizar el acceso a una energía asequible, segura, sostenible y moderna para todos
    • Meta 7.3: De aquí a 2030, duplicar la tasa mundial de mejora de la eficiencia energética
  • Objetivo 9: Industria, innovación e infraestructuras
    • Meta 9.5 Aumentar la investigación científica y mejorar la capacidad tecnológica de los sectores industriales de todos los países
    • Meta 9.c Aumentar significativamente el acceso a la tecnología de la información y las comunicaciones

1.2. Contexto y sentido de la asignatura en la titulación

Esta asignatura permitirá al alumno poder abordar el diseño e implementación de aplicaciones sabiendo realizar la elección del lenguaje y modelo de programación, así como el dispositivo de cómputo de acuerdo a los requisitos de las mismas y las limitaciones impuestas por el entorno o por el propio sistema elegido. Por tanto, esta asignatura será de gran utilidad a la hora de realizar prácticas y trabajos en el resto de asignaturas del máster así como en el trabajo final.

1.3. Recomendaciones para cursar la asignatura

Se recomienda tener nociones de programación y preferiblemente también conocimientos básicos de arquitectura de computadores y de modelos de programación, aunque no es imprescindible.

2. Competencias y resultados de aprendizaje

2.1. Competencias

En esta asignatura, el estudiante adquirirá las siguientes competencias básicas y generales:

  • CB6 - Poseer y comprender conocimientos que aporten una base u oportunidad de ser originales en el desarrollo y/o aplicación de ideas, a menudo en un contexto de investigación.
  • CB7 - Que los estudiantes sepan aplicar los conocimientos adquiridos y su capacidad de resolución de problemas en entornos nuevos o poco conocidos dentro de contextos más amplios (o multidisciplinares) relacionados con su área de estudio.
  • CB8 - Que los estudiantes sean capaces de integrar conocimientos y enfrentarse a la complejidad de formular juicios a partir de una información que, siendo incompleta o limitada, incluya reflexiones sobre las responsabilidades sociales y éticas vinculadas a la aplicación de sus conocimientos y juicios.
  • CB9 - Que los estudiantes sepan comunicar sus conclusiones y los conocimientos y razones últimas que las sustentan a públicos especializados y no especializados de un modo claro y sin ambigüedades
  • CB10 - Que los estudiantes posean las habilidades de aprendizaje que les permitan continuar estudiando de un modo que habrá de ser en gran medida autodirigido o autónomo.
  • CG02 - Capacidad para aplicar e integrar sus conocimientos, la comprensión de estos, su fundamentación científica y sus capacidades de resolución de problemas en entornos nuevos y definidos de forma imprecisa, incluyendo contextos de carácter multidisciplinar tanto investigadores como profesionales altamente especializados
  • CG03 - Capacidad para evaluar y seleccionar la teoría científica adecuada y la metodología precisa de sus campos de estudio para formular juicios a partir de información incompleta o limitada incluyendo, cuando sea preciso y pertinente, una reflexión sobre la responsabilidad social o ética ligada a la solución que se proponga en cada caso
  • CG04 - Capacidad para predecir y controlar la evolución de situaciones complejas mediante el desarrollo de nuevas e innovadoras metodologías de trabajo adaptadas al ámbito científico/investigador, tecnológico o profesional concreto, en general multidisciplinar, en el que se desarrolle su actividad
  • CG05 - Capacidad para transmitir en inglés, de manera oral y escrita, de un modo claro y sin ambigüedades a un público especializado o no, resultados procedentes de la investigación científica y tecnológica o del ámbito de la innovación más avanzada, así como los fundamentos más relevantes sobre los que se sustentan.
  • CG06 - Haber desarrollado la autonomía suficiente para participar en proyectos de investigación y colaboraciones científicas o tecnológicas dentro su ámbito temático, en contextos interdisciplinares y, en su caso, con una alta componente de transferencia del conocimiento.
  • CG07 - Capacidad para asumir la responsabilidad de su propio desarrollo profesional y de su especialización en uno o más campos de estudio.
  • CG08 - Poseer las aptitudes, destrezas y método necesarios para la realización de un trabajo de investigación y/o desarrollo de tipo multidisciplinar en los ámbitos de la Robótica, Gráficos y/o Visión por Computador.
  • CG09 - Capacidad para usar las técnicas, habilidades y herramientas de la Ingeniería necesarias para la resolución de problemas de los ámbitos de la Robótica, Gráficos y/o Visión por Computador.
  • CG11 - Capacidad para gestionar y utilizar bibliografía, documentación, bases de datos, software y hardware específicos de los ámbitos de la Robótica, Gráficos y/o Visión por Computador.
  • CG12 - Capacidad para trabajar en un grupo multidisciplinar y en un entorno multilingüe

Además, el estudiante adquirirá las siguientes competencias específicas:

  • CE07 - Capacidad para desarrollar y evaluar software para problemas de Robótica, Gráficos y Visión por Computador, que pueda utilizar arquitecturas de propósito general y/o específico.
  • CE10 - Capacidad para comprender el funcionamiento de los distintos dispositivos de cómputo
  • CE11 - Capacidad para aplicar métodos matemáticos para modelar, diseñar, desarrollar y analizar sistemas de cómputo orientados a prestaciones
  • CE12 - Capacidad para comprender y aplicar modelos de programación y lenguajes de propósito específico a aplicaciones de robótica, gráficos o visión por computador.

2.2. Resultados de aprendizaje

Al completar la asignatura, el alumnado deberá ser capaz de:

  • Conocer las características principales de los distintos dispositivos de cómputo
  • Conocer los modelos principales de programación en sistemas heterogéneos
  • Evaluar las prestaciones de un sistema informático en términos de rendimiento y energía
  • Comprender soluciones informáticas (hardware y software) para problemas con grandes requerimientos de cómputo, latencia, energía, ...
  • Elegir el dispositivo y modelo de programación más adecuado para distintos tipos de problemas en aplicaciones de visión, robótica y gráficos
  • Diseñar algoritmos conscientes de los dispositivos de cómputo, del rendimiento y del consumo energético

2.3. Importancia de los resultados de aprendizaje

Para desarrollar su labor durante el máster y posteriormente es vital que el alumnado sea capaz de conocer tanto los posibles dispositivos computacionales como los respectivos modelos de programación para analizar, diseñar e implementar soluciones correctas y eficientes. Dichos resultados se alcanzarán una vez adquiridas las competencias de la asignatura.

3. Evaluación

3.1. Tipo de pruebas y su valor sobre la nota final y criterios de evaluación para cada prueba

La evaluación constará de múltiples partes y varias de estas se evaluarán de manera continua. En concreto, se evaluarán:

  • Pruebas escritas teórico-prácticas (ponderación 60%)
  • Entrega de trabajos dirigidos (ponderación 30%)
  • Presentaciones y debates (ponderación 10%)

Superar la asignatura requiere obtener una calificación global igual o mayor de 5 sobre 10 puntos en la suma de las partes y una calificación igual o mayor de 4.5 en cada una de las partes individuales. El no cumplimiento de estos requisitos supone una calificación global máxima menor o igual a 4.5.

4. Metodología, actividades de aprendizaje, programa y recursos

4.1. Presentación metodológica general

El proceso de aprendizaje seguido en esta asignatura está dirigido hacia alcanzar los objetivos de aprendizaje. Para ello se emplean varias estrategias de enseñanza y aprendizaje que se detallan a continuación.

Actividades con profesorado:

  • Clase magistral: El instructor presenta y explica el contenido de la clase, incluyendo ejemplos de teoría y de prácticas
  • Aprendizaje basado en problemas: Los estudiantes abordan problemas concretos sobre la temática de la asignatura en grupos pequeños bajo la supervisión del profesor
  • Aprendizaje basado en proyectos: Los estudiantes se enfrentan a proyectos de cierta envergadura y duración en grupos pequeños bajo la supervisión del profesor
  • Sesiones prácticas: Cualquier actividad práctica realizada mediante la colaboración o individualmente en clase
  • Sesiones de laboratorio: Actividad realizada con equipamiento específico como pueden ser computadoras con hardware específico
  • Tutorías: Los estudiantes discuten y revisan materiales junto al profesorado
  • Actividades de evaluación: El conjunto de pruebas escritas y orales necesarias para la evaluación

Trabajo autónomo:

  • Tareas: preparación de seminarios, lectura de artículos científicos, pequeños proyectos de investigación, documentos y presentaciones para defender en clase o con el profesor
  • Laboratorios: preparación de actividades presentadas o evaluadas en las sesiones prácticas
  • Estudio de teoría y casos prácticas: preparación de las pruebas de evaluación, bibliotecas, lecturas, resolución de problemas, etc.
  • Actividades complementarias: Actividades opcionales y voluntarias como visualización de vídeos, asistencia a seminarios, talleres, etc.

4.2. Actividades de aprendizaje

El curso incluye las siguientes actividades formativas:

  • Clase magistral, 30 horas
  • Resolución de problemas y casos, 6 horas
  • Prácticas de laboratorio, 12 horas
  • Prácticas especiales,  2 horas
  • Trabajos de aplicación o investigación prácticos, 40 horas
  • Tutela personalizada profesor-alumno, 5 horas
  • Estudio, 50 horas
  • Pruebas de evaluación, 5 horas

4.3. Programa

El curso cubrirá los siguientes temas:

  1. Sistemas Informáticos
    • Elementos principales (Aplicación, Bibliotecas, Sistema Operativo, Hardware...)
    • Herramientas básicas (compilador, depurador...)
  2. Arquitectura de procesadores de propósito general, procesadores gráficos (rendering y cómputo), dispositivos programables (FPGAs) y aceleradores específicos (ASICs)
  3. Análisis y métricas de eficiencia en sistemas heterogéneos (rendimiento y energía)
  4. Programación orientada a la eficiencia
  5. Programación de sistemas heterogéneos (CUDA, OpenCL...) y síntesis de alto nivel para FPGAs
  6. Domain Specific Languages para Visión, Robótica y Gráficos

4.4. Planificación de las actividades de aprendizaje y calendario de fechas clave

La asignatura se planifica siguiendo el siguiente esquema:

  • Clases teoría, 2h/semana
  • Clases problemas y casos prácticos, 1h/semana
  • Sesiones de laboratorio/prácticas, 2h/bi-semanales

Los horarios exactos se anunciarán en las páginas web de la escuela y en la del curso, incluyendo las fechas de entregas, presentaciones de los proyectos, pruebas de evaluación y resto de hitos de la asignatura.

4.5. Bibliografía y recursos recomendados

  1. Ben Gaster et al., Heterogeneous Computing with OpenCL, Morgan Kaufmann, 2011
  2. J. Hennesy and D. Patterson, Computer Architecture: A Quantitative Approach (The Morgan Kaufmann Series in Computer Architecture and Design), Morgan Kaufmann, 2017